// 导入Student表对象
let { Student } = require("./database/index.js");

let { app } = require("./base.js");

// 定义一个中间件
// 所有的请求，首先会进过use中间件，
// 比如：设置统一的资源，或者验证用户的权限等等操作，都要放到use中间件中执行
app.use((req, res, next) => {
  //设置响应头，表示允许客户端跨域请求
  res.setHeader("Access-Control-Allow-Origin", "*");
  //设置响应头，表示允许客户端添加请求头信息
  res.setHeader("Access-Control-Allow-Headers", "*");
  //next()方法，表示下一步
  next();
});

// 查询全部学生信息
app.get("/getAllStudent", async (req, res) => {
  let stus = await Student.find();
  // res.json()方法，直接将数据以json字符串格式返回
  res.json(stus);
});

// 根据学生的id查询学生信息
app.get("/getOneStudent", async (req, res) => {
  //query属性获取的是请求参数，比如：?id=123&name=abc&age=33
  // 获取学生的id值
  let { _id } = req.query;
  // 定义一个学生对象
  let stu = {};
  if (_id) {
    // 根据学生的id值，查询该学生信息
    stu = await Student.findOne({ _id });
  }
  res.json(stu);
});

// 添加学生
app.post("/addStudent", (req, res) => {
  // 获取参数
  let { name, age, sex } = req.body;
  // 执行添加
  Student.create({
    name,
    age,
    sex,
  })
    .then(() => {
      res.json(true);
    })
    .catch(() => {
      res.json(false);
    });
});

// 修改学生
app.post("/updateStudent", (req, res) => {
  // 获取参数
  let { _id, name, age, sex } = req.body;
  // 执行修改
  Student.updateOne({ _id }, { name, age, sex })
    .then(() => {
      res.json(true);
    })
    .catch(() => {
      res.json(false);
    });
});

// 删除学生
app.post("/deleteStudent", (req, res) => {
  // 获取参数
  let { _id } = req.body;
  // 执行删除
  Student.deleteOne({_id}).then(()=>{
    res.json(true);
  }).catch(()=>{
    res.json(false);
  })
});
